
interface Component {
  render(): Vnode;
  data(): object;
  setup(): object;
  created(): void;
  beforeMount(): void;
  mounted(): void;
}

/**
 * 虚拟dom
 * 为什么要有虚拟dom？ 
 * dom上的属性太多了
 * 
 * 为什么用class不用interface
 * interface编译之后会被删除，而class不会
 */
export class Vnode {
  tag: string | Component //标签 div|p|组件
  el?: HTMLElement //真实DOM元素
  key?: string | number
  children: Vnode[] | string
}